package Acwing.基础算法;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

/**
 * @Title: intervalMerging
 * @Author 贾金博
 * @Package Acwing.基础算法
 * @Date 2025/4/10 上午11:06
 * @description: 区间合并问题
 */
public class intervalMerging {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 区间的个数
        qj[] a = new qj[n + 10];
        // 这里对象的数组 在进行赋值的时候 每一个都要去进行new的
        for(int i = 1; i <= n; i ++ ) {
            a[i] = new qj(); // 这里不要忘了
            a[i].l = sc.nextInt();
            a[i].r = sc.nextInt();
        }

        // 现在开始进行区间合并问题
        // 在合并之前要进行排序的功能
        // 排序的规则是按照l 从小到大 要是l一样的话 就按照r 从小到大
        Arrays.sort(a, 1, n + 1, (t1, t2) -> {
            if(t1.l != t2.l) {
                // l 按照的是从小到大的顺序进行排序的
                return t1.l - t2.l; // 第一个减去 第二个就是正常的 就是默认的从小到大的顺序进行排序的
            } else {
                return t1.r - t2.r; // 这个和上面的那个是一样的
            }
        });

        // 先输出看看是不是对的
//        for(int i = 1; i <= n; i ++ ) {
//            System.out.println(a[i].l + " " + a[i].r);
//        }
        int ret = 0; // 表示最后区间的个数
        int l = a[1].l, r = a[1].r;
        for(int i = 2; i <= n; i ++ ) {
            if (a[i].l <= r) {
                // 是可以进行去合并的
                r = Math.max(r, a[i].r);
            } else {
                l = a[i].l;
                r = a[i].r;
                ret ++ ;// 区间的个数 + 1
            }
        }

        ret ++ ;// 最后的区间要去 + 1

        System.out.println(ret);
    }
}

class qj {
    int l, r;
}
